数据结构 测验3
开始时间09/09/2024 12:00:00 AM
结束时间12/25/2024 11:59:00 PM
答题时长155519分钟
答卷类型标准答案
试卷总分100
判断题52 分
1-1

算法可以没有输入,但是必须有输出。

| 参考答案
答案
T
1分
1-2

2N2^NNNN^N具有相同的增长速度。

| 参考答案
答案
F
2分
1-3

MM个元素存入用长度为SS的数组表示的散列表,则该表的装填因子为M/SM/S

| 参考答案
答案
T
1分
1-4

对于顺序存储的长度为NN的线性表,访问结点和增加结点的时间复杂度分别对应为O(1)O(1)O(N)O(N)

| 参考答案
答案
T
1分
1-5

在具有NN个结点的单链表中,访问结点和增加结点的时间复杂度分别对应为O(1)O(1)O(N)O(N)

| 参考答案
答案
F
1分
1-6

链表 - 存储结构

链表中逻辑上相邻的元素,其物理位置也一定相邻。

| 参考答案
答案
F
1分
1-7

若一个栈的输入序列为1,2,3,…,NN,输出序列的第一个元素是ii,则第jj个输出元素是ji1j-i-1

| 参考答案
答案
F
2分
1-8

在用数组表示的循环队列中,front值一定小于等于rear值。

| 参考答案
答案
F
1分
1-9

在实现二项式队列时,每棵二项式树的子树是按规模递增的顺序链接的。

| 参考答案
答案
F
1分
1-10

某二叉树的前序和中序遍历序列正好一样,则该二叉树中的任何结点一定都无左孩子。

| 参考答案
答案
T
2分
1-11

AB都是一棵二叉树的叶子结点,则存在这样的二叉树,其前序遍历序列为...A...B...,而中序遍历序列为...B...A...

| 参考答案
答案
F
2分
1-12

一棵有124个结点的完全二叉树,其叶结点个数是确定的。

| 参考答案
答案
T
2分
1-13

二叉树就是度为二的有序树。

| 参考答案
答案
F
1分
1-14

在一棵由包含4、5、6等等一系列整数结点构成的二叉搜索树中,如果结点4和6在树的同一层,那么可以断定结点5一定是结点4和6的父亲结点。

| 参考答案
答案
F
3分
1-15

将1、2、3、4、5、6顺序插入初始为空的AVL树中,当完成这6个元素的插入后,该AVL树的先序遍历结果是:4、2、1、3、5、6。

| 参考答案
答案
T
3分
1-16

对一棵平衡二叉树,所有非叶结点的平衡因子都是0,当且仅当该树是完全二叉树。

| 参考答案
答案
F
2分
1-17

任何最小堆的前序遍历结果是有序的(从小到大)。

| 参考答案
答案
F
2分
1-18

NN2\ge 2)个权值均不相同的字符构造哈夫曼树,则树中任一非叶结点的权值一定不小于下一层任一结点的权值。

| 参考答案
答案
T
2分
1-19

如果无向图G必须进行两次广度优先搜索才能访问其所有顶点,则G一定有2个连通分量。

| 参考答案
答案
T
2分
1-20

无向连通图所有顶点的度之和为偶数。

| 参考答案
答案
T
1分
1-21

用邻接表法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关。

| 参考答案
答案
F
1分
1-22

在任一有向图中,所有顶点的入度之和等于所有顶点的出度之和。

| 参考答案
答案
T
2分
1-23

Kruskal 算法是通过每步添加一条边及其相连的顶点到一棵树,从而逐步生成最小生成树。

| 参考答案
答案
F
2分
1-24

对于带权无向图 G = (V, E),M 是 G 的最小生成树,则 M 中任意两点 V1 到 V2 的路径一定是它们之间的最短路径。

| 参考答案
答案
F
2分
1-25

若图G有环,则G不存在拓扑排序序列。

| 参考答案
答案
T
2分
1-26

NN个记录进行简单选择排序,比较次数和移动次数分别为O(N2)O(N^2)O(N)O(N)

| 参考答案
答案
T
2分
1-27

希尔排序是稳定的算法。

| 参考答案
答案
F
2分
1-28

NN个记录进行堆排序,需要的额外空间为O(N)O(N)

| 参考答案
答案
F
2分
1-29

在散列表中,所谓同义词就是具有相同散列地址的两个元素。

| 参考答案
答案
T
2分
1-30

KMP算法的最大特点是指示主串的指针不需要回溯

| 参考答案
答案
T
2分
多选题12 分
3-1

排序算法的稳定性

下列关于顺序表的排序算法中,▁▁▁▁▁ 是稳定的。

| 参考答案
答案
BD
3分
3-2

关于二分查找算法

二分查找算法能适用于 ▁▁▁▁▁ 。

| 参考答案
答案
B
3分
3-3

以下说法错误的是( )。

| 参考答案
答案
AC
3分
3-4

下面结构中适于表示稀疏有向图的是( ) 。

| 参考答案
答案
BDE
3分
填空题6 分
4-1

图的深度优先搜索(DFS)使用了一种数据结构,这种数据结构是

1分

| 参考答案
填空#1
| 评测详情
填空详情
1分
4-2

给定一组整数:

{ 36, 25, 81, 17, 49 }

采用快速排序法按升序排序,请写出将首个元素作为枢轴(支点)经过一趟排序后的结果:

{ 
1分
,
1分
,
1分
,
1分
,
1分
}
| 参考答案
填空#1
17
填空#2
25
填空#3
36
填空#4
81
填空#5
49
| 评测详情
填空详情
5分
程序填空题30 分
5-1

下列代码的功能是从一个大顶堆H的某个指定位置p开始执行下滤。

void PercolateDown( int p, PriorityQueue H )
{
   int  child;
   ElementType  Tmp = H->Elements[p];
   for ( ; p * 2 <= H->Size; p = child ) {
      child = p * 2;
      if ( child!=H->Size && 
3分
) child++; if ( H->Elements[child] > Tmp )
3分
; else break; } H->Elements[p] = Tmp; }
| 参考答案
填空#1
H->Elements[child+1] > H->Elements[child]
填空#2
H->Elements[p] = H->Elements[child]
| 评测详情
填空详情
6分
5-2

下列代码的功能是从大顶堆H中删除指定位置p上的元素,然后继续调整为大顶堆。

Deletion ( PriorityQueue H,  int p )  /* delete the element H->Elements[p] */
{
   ElementType temp;
   int child;

   temp = H-> Elements[ H->Size-- ];
   if ( temp > H->Elements[p] ) {
      while ( (p != 1) && (temp > H->Elements[p/2]) ) { 
         
3分
; p /= 2; } } else { while( (child = 2*p) <= H->Size) { if ( child != H->Size &&
3分
) child ++; if (
3分
) { H->Elements[p] = H->Elements[child]; p = child; } else break; } } H->Elements[p] = temp; }
| 参考答案
填空#1
H->Elements[p] = H->Elements[p/2]
填空#2
H->Elements[child+1] > H->Elements[child]
填空#3
temp < H->Elements[child]
| 评测详情
填空详情
9分
5-3

下列代码的功能是返回带头结点的单链表L的逆转链表。

List Reverse( List L )
{
    Position Old_head, New_head, Temp;
    New_head = NULL;
    Old_head = L->Next;

    while ( Old_head )  {
        Temp = Old_head->Next;
        
3分
; New_head = Old_head; Old_head = Temp; }
3分
; return L; }
| 参考答案
填空#1
Old_head->Next = New_head
填空#2
L->Next = New_head
| 评测详情
填空详情
6分
5-4

下列代码的功能是将二叉树T中的结点按照层序遍历的顺序输出。

typedef struct TreeNode *Tree;
struct TreeNode
{
   int Key;
   Tree  Left;
   Tree  Right;
};

void Level_order ( Tree T )
{
   Queue Q;

   if ( !T ) return; 
   Q = CreateQueue( MaxElements ); 
   Enqueue( T, Q ); 
   while ( !IsEmpty( Q ) ){
      T = Front_Dequeue ( Q ); /* return the front element and delete it from Q */
      printf("%d ", T->Key);
      if ( T->Left ) 
         
3分
; if (
3分
)
3分
; } }
| 参考答案
填空#1
Enqueue( T->Left, Q )
填空#2
T->Right
填空#3
Enqueue( T->Right, Q )
| 评测详情
填空详情
9分